/*
 * UMediaWriter.h
 *
 *  Created on: 2020年7月18日
 *      Author: terry
 */

#ifndef UMEDIAWRITER_H_
#define UMEDIAWRITER_H_

#include "UMediaType.h"
#include "UMediaFormat.h"
#include "UMediaPacket.h"


class DLLEXPORT UMediaWriter
{
public:
	enum Status
	{
		MEDIA_WRITER_OPENED = 0x1000,
		MEDIA_WRITER_CLOSED,
		MEDIA_WRITER_IO_ERROR
	};

public:
	virtual ~UMediaWriter() {}

	/**
	 * 打开文件
	 * @param filename	文件名
	 * @param fmt		媒体格式
	 * @return
	 */
	virtual bool open(const char* filename, const UMediaFormat& fmt) =0;

	virtual void close() =0;

	virtual bool isOpen() =0;

	virtual bool getFormat(UMediaFormat& fmt) =0;

    virtual bool write(UMediaPacket& pkt) =0;

    virtual int getFileFormat() =0;


};


class UMediaWriterListener
{
public:
	virtual ~UMediaWriterListener() {}

	virtual void onWriteStatus(UMediaWriter* writer, int status) =0;
};



#endif /* UMEDIAWRITER_H_ */
